package com.maxjay.system.service;

import com.maxjay.system.po.BaseEntity;

@SuppressWarnings({"rawtypes"})
public interface BaseService {
	
	BaseEntity get(Class clazz, String id);
	
	void save(BaseEntity baseEntityVo);
	
	void update(BaseEntity baseEntityVo);
	
	/**
	 * 保存或更新
	 * 
	 * @param baseEntity 
	 */
	void saveOrUpdate(BaseEntity baseEntityVo);
	
	void saveOrValidateUpdate(BaseEntity baseEntityVo, String updateKey);
	
	/**
	 * 验证更新KEY，验证通过后再执行更新，否则抛出异常
	 * 
	 * @param baseEntity 此对象必须是从数据库load出来的，必须有updateKey
	 * @param updateKey 更新KEY
	 */
	void validateUpdate(BaseEntity baseEntityVo, String updateKey);
	
	void delete(BaseEntity baseEntityVo);
	
	void delete(Class clazz, String id);
	
	void validateDelete(Class clazz, String id, String updateKey);
}
